Laravel
Insertar imagen en Laravel-Excel
Aprenderemos a Insertar imagen en Laravel-Excel. Para insertar imágenes en un archivo Excel usando Laravel-Excel, puedes hacerlo con la biblioteca Maatwebsite\Excel junto con PhpSpreadsheet.
Aquí tienes los pasos para insertar una imagen en un archivo Excel:
1. Instalar Laravel-Excel
Si aún no lo tienes instalado, usa:
composer require maatwebsite/excel
2. Crear una Exportación
Ejecuta el siguiente comando para generar una clase de exportación:
php artisan make:export ProductsExport --model=Product
Esto generará un archivo en app/Exports/ProductsExport.php
.
3. Modificar la Exportación para Incluir Imágenes
Edita app/Exports/ProductsExport.php
:
namespace App\Exports;
use App\Models\Product;
use Maatwebsite\Excel\Concerns\WithDrawings;
use Maatwebsite\Excel\Concerns\FromCollection;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
class ProductsExport implements FromCollection, WithDrawings
{
public function collection()
{
return Product::select('id', 'name', 'price', 'image_path')->get();
}
public function drawings()
{
$drawings = [];
$products = Product::select('id', 'image_path')->get();
foreach ($products as $index => $product) {
if ($product->image_path && file_exists(public_path($product->image_path))) {
$drawing = new Drawing();
$drawing->setName('Product Image');
$drawing->setDescription('Product Image');
$drawing->setPath(public_path($product->image_path)); // Ruta de la imagen
$drawing->setHeight(50); // Altura en píxeles
$drawing->setCoordinates('D' . ($index + 2)); // Columna y fila
$drawings[] = $drawing;
}
}
return $drawings;
}
}
4. Exportar el Archivo Excel
En tu controlador (app/Http/Controllers/ExportController.php
), agrega:
use App\Exports\ProductsExport;
use Maatwebsite\Excel\Facades\Excel;
public function export()
{
return Excel::download(new ProductsExport, 'products.xlsx');
}
5. Definir la Ruta en web.php
use App\Http\Controllers\ExportController;
Route::get('/export-products', [ExportController::class, 'export']);
Ahora, al visitar /export-products
, se generará un archivo Excel con imágenes en la columna D
.